GraVis Features

What is the graph drawing system GraVis supposed to do and how is it being done ? The main intent of this page is to give a review of a selection of important features GraVis offers and thus gives the user an idea how our system may be helping him to fullfill his needs. Since GraVis is an ongoing project you may want to check out our future section to see what we plan to add in the near future.

Design Goals

As stated in the Welcome ! section, the design of GraVis includes elements making it a generally usable tool for information visualization, if this data is representable as graphs. This generality forces GraVis to be both extensible and flexible . To be concrete, the following design elements realize these goals: However, this is only a collection of the most important features of GraVis and contains mostly design elements directly visible to the user. The functionality described in the list is implemented and working and if you want to know what is going to be added to the functionality of GraVis , please refer to our future section. The remainder of this page will cover technical details about how we have realized the various elements of GraVis , except for the screenshots displayed in the next section.

Screenshots

To show some of the features of GraVis a small collection of screenshots of the currently available version follows. Please click on the thumbnail image if you want to see the whole screenshot.

Offsets
Edge offsets
Highlighted
Highlighted area
Kandinsky
Kandinsky layout
Circle
Circle
Tree
Tree
Grid
Random grid (zoom 0.75)
Springembedder
Springembedder
Observer
Same with observer at zoom 4.0
The first row of screenshots displays the support for orthogonal graph layout in GraVis , especially the last image shows the output of one of the layout modules. The other images give an indication of the interactive features, like edge offsets and thickness, node sizes, colors and area highlighting.

The next row contains images displaying the output of some of the layout modules currently included in GraVis . Again, different graphical attributes for the graph elements (node type, fill and outline color, edge direction) are used in each picture. The last graph has been created with one of the graph generators available as an extension module and also uses the zoom facility.

Finally, the last row shows an example of the use of the observer concept . While the first image contains a 5x5 grid at a very low zoom level, the next image shows two viewers visualizing the same graph. The right part uses a very high zoom level to display a node in great detail. Each modifiaction of the graph in any of the (unlimited number of) observers is automatically forwarded to the other observers.

Technical Information

Some of the important features mentioned at the beginning of this page are now described and explained more detailed, such that the design goals and their usefulness become clearer. The following diagram gives an overview over the general structure of GraVis

GraVis Structure

GraVis is devided into six modules or classes of modules. The top row represents the kernel system with the exception of the visualization component (or Viewer ), which may also be regarded as an external module since it is not necessary for the kernel to operate. The bottom row represents the tools and extension modules with the special characteristic that they are easily interchangeable, such that eg. some algorithm may be implemented and tested as a extension module and then compiled into GraVis as a tool - or vice versa.

The arrows between the modules represent the communication links used for command and information exchange. Since each module communicates with the others by using a communication port, the modules are highly independent of each other.

Kernel System

The kernel of GraVis implements the base functionality of the graph drawing system and consists of the Dispatcher and the Documents The role of the dispatcher is to control the startup, execution and shutdown of GraVis by handling and resending command objects.

The design philosophy in GraVis follows the object-oriented paradigma and the system is accordingly implemented in the object-oriented programming language Eiffel . To achieve our goal of maximum flexibility and extensibility, the design uses several techniques described in greater detail on the language page of GraVis . Important here are the design patterns , namely the observer and the command pattern. Both are used in the Dispatcher to implement the communication concept, which is based on sending command objects between the various modules. The observer pattern controls the receivers of the command objects.

Multiple graphs are represented by one Document each, which is the other important component of the kernel system. The base of a document is the powerfull graph data structure used throughout the system. As indicated in the structure diagram, graphs are realized as a class hierarchy supporting two- and three-dimensional coordinates. The Document controls and handles access to the graphs via the communication interface. The command objects received by a document are stored on a stack, implementing the undo/redo mechanism supported by GraVis

User Interface

One of the highlights of GraVis is its intuitive user interface implemented in the visualization component. The Viewer itself is highly optimized such that even large graphs can be interactively manipulated with minimal slowdown. With all these optimizations the Viewer still supports the complete set of graphical attributes necessary for effective graph visualization. Among these attributes are: Elimination of extensive input mode changing was the primary design goal of the user interface. Creating and modifying a graph is very easy and fast in GraVis since almost every important operation can be performed with the left mouse button. The behaviour changes according to the context where the button event occured, such that creating nodes, edges and bends, moving them or creating selections can be done rapidly. The right mouse button is reserved for delete operations which can affect single graph elements or whole selections. Finally, the middle mouse button represents special functions like label editing.

Extension Modules

Extending the functionality of the graph drawing system is an important aspect of GraVis . The extension facility is mainly used to make new graph algorithm modules available for the system. However, the facility provides also the important possibility to add communication interfaces to other applications such that GraVis serves as a visualization frontend. These applications can be very complex like a CASE tool or very simple like a printing service using a format not directly supported by GraVis

Extension modules, which are either standalone or directly compiled into GraVis , are independent of the rest of the system and thus form a module and algorithm library. This library can be used within other applications provided that the standard interface of the modules is supported.

When used directly in GraVis , extension modules may interact with the base system in various ways. They can monitor the user input to implement incremental graph layout algorithms or they can activly update the Viewer while executing an arbitrary graph algorithm, thus animating it. Using this interaction scheme, external applications communicating with GraVis receive their data and update the Viewer with new data they generate.


Welcome Language
Platforms Availability
Future Team

Harald Lauer(lauer@informatik.uni-tuebingen.de)